{
    const obj1: {} = {}
    obj1
    // 类型注解写成多行可以省略分号
    const obj2: {
        a: number
        b: boolean
        c: string
        sayHi(): void
    } = {
        a: 1,
        b: true,
        c: '3',
        sayHi () {
            console.log('haha');
        }
    }
    obj2
    // 多行类型写成一行必须加分号 逗号也行
    const obj3: {x: number; y:number; z(): number}= {
        x: 1,
        y: 2,
        z() {
            return 1
        }
    }
    obj3

    // 对象中的方法用箭头函数
    // 变量：类型注解
    // 属性: 类型
    const obj4: {
        // fn(): void 上下两种等价
        fn: () => void
    } = {
        fn () {

        }
    }
    obj4
    // 对象中的属性可选 可选就是在冒号前面加？
    const obj5: {
        a: string,
        b?: number
        sayHi: () => string
        haha?: () => void
    } = {
        a: '1',
        sayHi () {
            return 'haha'
        }
    }
    obj5
    // 使用类型别名
    type MyObj6 = {
        a: string,
        b?: number
        sayHi: () => string
        haha?: () => void
    }
    const obj6: MyObj6 = {
        a: '1',
        sayHi () {
            return 'haha'
        }
    }
    obj6
    
    // axios练习 练习类型别名
    /**
     * axios({
     *  url: ''
     *  method可选
     * })
     */
    type Config = {url: string; method?: string}
    function axios(config: Config) {
        config
    }
    axios({
        url: '',
        
    })
}
export { }
